home *** CD-ROM | disk | FTP | other *** search
/ Aminet 22 / Aminet 22 (1997)(GTI - Schatztruhe)[!][Dec 1997].iso / Aminet / game / role / alan.lha / dungeon.alan < prev    next >
Text File  |  1997-01-08  |  27KB  |  955 lines

  1. --------------------------------------------------------------------
  2. --
  3. --          O P T I O N S
  4. --
  5. --------------------------------------------------------------------
  6. -- Start with the options section. Here we define certain preferences
  7. -- concerning the overall game.
  8. --------------------------------------------------------------------
  9.  
  10. OPTIONS
  11.     language english.
  12.  
  13.  
  14. --------------------------------------------------------------------
  15. --
  16. --          D E F A U L T   A T T R I B U T E S
  17. --
  18. --------------------------------------------------------------------
  19. -- The defaults section defines attributes that every object or
  20. -- location should have. This is necessary to be able to refer to
  21. -- such attribute in general verb definitions. Here we have defined
  22. -- that the default behaviour of an object is to be 'takable'. Then
  23. -- we can say particulary for those that isn't that they are
  24. -- 'NOT takable' - things like doors and trees.
  25. --------------------------------------------------------------------
  26.  
  27. LOCATION ATTRIBUTES
  28.     NOT in_forest.
  29.  
  30.  
  31. OBJECT ATTRIBUTES
  32.     NOT openable.
  33.     closed.
  34.     takable.
  35.  
  36.  
  37. ---------------------------------------------------------------------
  38. --
  39. --          S Y N O N Y M S
  40. --
  41. ---------------------------------------------------------------------
  42. -- Synonyms is words that is meant to be completely interchangable
  43. -- from the players point of view. The word on the right hand side
  44. -- has to be defined elsewhere and the word (or words) on the left
  45. -- hand side is the synonym.
  46. -- Notice that words like 'look' and 'quit' has to be quoted when
  47. -- they refer to user input, since they also is reserved words in
  48. -- the ALAN language.
  49. ---------------------------------------------------------------------
  50.  
  51. SYNONYMS
  52.     north = n.
  53.     south = s.
  54.     west = w.
  55.     east = e.
  56.     down = d.
  57.     up = u.
  58.  
  59.     l = 'look'.
  60.     q = 'quit'.
  61.     i = 'inventory'.
  62.  
  63.     pile = leaves.
  64.     lunch = sandwich.
  65.     lamp = lantern.
  66.     magazine, report, newspaper, paper = issue.
  67.  
  68.     get = take.
  69.  
  70.  
  71. ---------------------------------------------------------------------
  72. --
  73. --          S Y N T A X
  74. --
  75. ---------------------------------------------------------------------
  76. -- The default syntax of a verb you have defined is VERB OBJECT, where
  77. -- verb is just one word. If you want the behaviour to be anything else
  78. -- you have to define the syntax you want. When you write bigger games
  79. -- it is good programming style to define the syntax for all your verbs.
  80. -- Here we have defined three verbs that don't take any object ("look",
  81. -- "quit" and "inventory"), two that should be able to handle multiple
  82. -- objects ("take" and "drop" - indicated by the *) and two verbs where
  83. -- the verb itself consists of two word ("turn on" and "turn off").
  84. ---------------------------------------------------------------------
  85.  
  86. SYNTAX
  87.     'look' = 'look'.
  88.     'quit' = 'quit'.
  89.     take_inventory = 'inventory'.
  90.  
  91.     take = Take (obj) *.
  92.     drop = Drop (obj) *.
  93.     turn_on = Turn On (obj).
  94.     light = Light (obj).
  95.     turn_off = Turn Off (obj).
  96.  
  97.     open = Open (obj).
  98.     close = Close (obj).
  99.  
  100.  
  101. ---------------------------------------------------------------------
  102. --
  103. --          G L O B A L   V E R B S
  104. --
  105. ---------------------------------------------------------------------
  106. -- Here we have some global verb definitions, i.e. verb that should
  107. -- apply to most objects, or verb that doesn't need any object.
  108. ---------------------------------------------------------------------
  109.  
  110. VERB 'look' DOES
  111.     LOOK.
  112. END VERB.
  113.  
  114.  
  115. VERB 'quit' DOES
  116.     QUIT.
  117. END VERB.
  118.  
  119.  
  120. VERB take_inventory DOES
  121.     LIST inventory.
  122. END VERB.
  123.  
  124. -- By using the attribute 'takable' we can define which objects can be
  125. -- taken and which are just meant to stay where they are.
  126. -- An attribute used in this way MUST be a default attribute to ensure
  127. -- that every object has it.
  128.  
  129. VERB take
  130.     CHECK obj IS takable
  131.         ELSE "You can't take that!"
  132.     AND obj NOT IN inventory
  133.         ELSE "You've already got it."
  134.     DOES
  135.         LOCATE obj IN inventory.
  136.         "Taken!"
  137. END VERB.
  138.  
  139.  
  140. VERB drop
  141.     CHECK obj IN inventory
  142.         ELSE "You havn't got it."
  143.     DOES
  144.         LOCATE obj HERE.
  145.         "Dropped!"
  146. END VERB.
  147.  
  148. -- Open works with two default attributes, 'openable' which defines if
  149. -- open should work with each object and 'closed' which is a default
  150. -- attribute that makes it possible to define a general meaning of
  151. -- the verb.
  152.  
  153. VERB open
  154.     CHECK obj IS openable
  155.         ELSE "You can't open that!"
  156.     AND obj IS closed
  157.         ELSE "It is already open."
  158.     DOES
  159.         MAKE obj NOT closed.
  160.         "The $o is now open."
  161. END VERB.
  162.  
  163. VERB close
  164.     CHECK obj IS openable
  165.         ELSE "You can't close that!"
  166.     AND obj IS NOT closed
  167.         ELSE "It is not open."
  168.     DOES
  169.         MAKE obj closed.
  170.         "The $o is now closed."
  171. END VERB.
  172.  
  173. -- A default action for the verb Examine. $o refers to the print name
  174. -- of the object
  175.  
  176. VERB examine DOES
  177.     "I see nothing special about the $o."
  178. END VERB.
  179.  
  180.  
  181. ----------------------------------------------------------------------
  182. --
  183. --          E V E N T
  184. --
  185. ---------------------------------------------------------------------
  186. -- This is an event used to make the impression of a bird chirping
  187. -- somewhere in the forest. The event itself is scheduled to execute
  188. -- where the hero is every fifth move. Every location has the attribute
  189. -- 'in_forest'. For most it is false, but for those locations considered
  190. -- to be in the forest 'in_forest' is true and the text will be printed
  191. -- (the bird will chirp).
  192. -- Notice that the event is first scheduled in the start section
  193. -- and then resceduled by itself every time it executes.
  194. ---------------------------------------------------------------------
  195.  
  196. EVENT bird_chirp
  197.     IF LOCATION IS in_forest THEN
  198.         "You hear in the distance the chirping of a song bird."
  199.     END IF.
  200.     SCHEDULE bird_chirp AT hero AFTER 5.
  201. END EVENT.
  202.  
  203.  
  204. ----------------------------------------------------------------------
  205. --
  206. --          T H E   W O R L D   ( LOCATIONS AND OBJECTS )
  207. --
  208. ----------------------------------------------------------------------
  209. -- Here starts the main part of the game - the map (i.e. the locations
  210. -- and their connections) and all the objects (scattered all over the
  211. -- world).
  212. ----------------------------------------------------------------------
  213.  
  214. -------------------
  215. LOCATION w_of_house
  216. -------------------
  217.     NAME 'West of House'
  218.     DESCRIPTION
  219.         "Welcome to Dungeon (ALAN Demo). This version created 29-FEB-92.
  220.          $pYou are in an open field west of a big white house with a boarded
  221.          front door."
  222.  
  223.     EXIT n TO n_of_house.
  224.     EXIT s TO s_of_house.
  225.  
  226. -- An exit with a check without condition is a way to get an own
  227. -- message when the user tries that way (instead of the usual
  228. -- "You can't go that way.") It's a way to create the impression
  229. -- that it WOULD be possible to go that way, if only...
  230. -- Where the exit leads is irrelevant, since there is really no exit.
  231.  
  232.     EXIT e TO inside_house
  233.         CHECK "The door is locked, and there is evidently no key."
  234.     END EXIT.
  235.     EXIT w TO forest3.
  236.  
  237. END LOCATION.
  238.  
  239. OBJECT mail_box NAME Small mailbox AT w_of_house
  240.     CONTAINER
  241.     IS openable.
  242.     DESCRIPTION
  243.         "There is a small mailbox here."
  244.         IF mail_box IS NOT closed THEN
  245.             LIST mail_box.
  246.         END IF.
  247.  
  248.     VERB open DOES
  249.     LIST mail_box.
  250.     END VERB.
  251.  
  252. END OBJECT.
  253.  
  254. OBJECT leaflet IN mail_box
  255.     VERB read DOES
  256.         "'I hope you have noticed that this isn't your usual Dungeon
  257.         but rather an ALAN implementation brought to you by
  258.         $n$iThoNi & GorFo Adventure Factories
  259.     $pHappy Adventuring!'"
  260.     END VERB.
  261. END OBJECT.
  262.  
  263. -------------------
  264. LOCATION n_of_house
  265. -------------------
  266.     NAME 'North of House'
  267.     DESCRIPTION
  268.         "You are facing the north side of a white house.
  269.         There is no door here, and all the windows are barred."
  270.  
  271.     EXIT n TO dimly_lit_forest.
  272.     EXIT s TO inside_house
  273.         CHECK "The windows are all barred."
  274.     END EXIT.
  275.     EXIT e TO behind_house.
  276.     EXIT w TO w_of_house.
  277.  
  278. END LOCATION.
  279.  
  280. -------------------------
  281. LOCATION dimly_lit_forest
  282. -------------------------
  283.     NAME Forest
  284.     IS in_forest.
  285.     DESCRIPTION
  286.         "You are in a dimly lit forest, with large trees all around."
  287.  
  288.     EXIT n TO dimly_lit_forest2.
  289.     EXIT e, s TO clearing.
  290.     EXIT w TO n_of_house.
  291.     EXIT u TO tree_top.
  292. END LOCATION.
  293.  
  294. OBJECT tree AT dimly_lit_forest
  295.  
  296. -- Since the global definition of Take checks if on object is 'takable'
  297. -- we can make the tree stay where we put it by defining it to be
  298. -- 'NOT takable'.
  299.  
  300.     IS NOT takable.
  301.     DESCRIPTION
  302.         "One particularly large tree with some low branches stands here."
  303.  
  304.     VERB climb DOES
  305.         LOCATE HERO AT tree_top.
  306.     END VERB.
  307. END OBJECT.
  308.  
  309. -----------------
  310. LOCATION tree_top
  311. -----------------
  312.     NAME 'Up a Tree'
  313.     IS in_forest.
  314.     DESCRIPTION
  315.         "You are about ten feet above the ground nestled among some large
  316.         branches.  The nearest branch above you is beyond your reach."
  317.  
  318.     EXIT d TO dimly_lit_forest.
  319.  
  320. END LOCATION.
  321.  
  322. OBJECT birds_nest NAME Small birds nest AT tree_top
  323.     CONTAINER
  324.     DESCRIPTION
  325.         IF birds_nest AT tree_top THEN
  326.             "On the branch is a small birds nest."
  327.         ELSE
  328.             "There is a small birds nest here."
  329.         END IF.
  330.         LIST birds_nest.
  331. END OBJECT.
  332.  
  333. OBJECT jewel_egg NAME Jewel encrusted egg IN birds_nest
  334. END OBJECT.
  335.  
  336. --------------------------
  337. LOCATION dimly_lit_forest2
  338. --------------------------
  339.     NAME Forest
  340.     IS in_forest.
  341.     DESCRIPTION
  342.         "You are in a dimly lit forest, with large trees all around.
  343.         To the east, there appears to be sunlight."
  344.  
  345.     EXIT n TO s_of_house.
  346.     EXIT s TO forest1.
  347.     EXIT w TO forest3.
  348.     EXIT e TO clearing.
  349. END LOCATION.
  350.  
  351. -------------------
  352. LOCATION s_of_house
  353. -------------------
  354.     NAME 'South of House'
  355.     DESCRIPTION
  356.         "You are facing the south side of a white house.
  357.         There is no door here, and all the windows are barred."
  358.  
  359.     EXIT n TO inside_house
  360.         CHECK "The windows are all barred."
  361.     END EXIT.
  362.     EXIT e TO behind_house.
  363.     EXIT w TO w_of_house.
  364.     EXIT s TO dimly_lit_forest2.
  365.  
  366. END LOCATION.
  367.  
  368. ---------------------
  369. LOCATION behind_house
  370. ---------------------
  371.     NAME 'Behind House'
  372.     DESCRIPTION
  373.         "You are behind the white house."
  374.  
  375.     EXIT e TO clearing.
  376.     EXIT n TO n_of_house.
  377.     EXIT s TO s_of_house.
  378.  
  379. -- Since 'in' is a reserved word we have to quote it to use it as a
  380. -- user name for the exit.
  381.  
  382.     EXIT w, 'in' TO kitchen
  383.         CHECK outside_window IS NOT closed
  384.             ELSE "The window is closed."
  385.     END EXIT.
  386.  
  387. END LOCATION.
  388.  
  389. OBJECT outside_window NAME window AT behind_house
  390.     IS NOT takable.
  391.     IS openable.
  392.     DESCRIPTION
  393. -- It is possible to make descriptions that depends on different
  394. -- attributes. You can use any kind of statement in a description.
  395. -- Note that the "xxx" form is not just a simple string - it is
  396. -- really a print statement.
  397.  
  398.         "In one corner of the house there is a window which is"
  399.         IF outside_window IS NOT closed THEN
  400.             "open."
  401.         ELSE
  402.             "slightly ajar."
  403.         END IF.
  404.  
  405. -- Since an object can only be at one place one way to implement such
  406. -- a thing as a window that can be reached both from 'outside' and
  407. -- 'inside' is to use two windows with the same name, and then be
  408. -- careful to operate both windows at the same time.
  409.  
  410.     VERB open DOES ONLY
  411.         MAKE inside_window NOT closed.
  412.         MAKE outside_window NOT closed.
  413.         "With great effort, you open the window far enough to allow passage."
  414.     END VERB.
  415.  
  416.     VERB close DOES ONLY
  417.         MAKE inside_window closed.
  418.         MAKE outside_window closed.
  419.         "The window closes (more easily than it opened)."
  420.     END VERB.
  421.  
  422. END OBJECT.
  423.  
  424. -----------------
  425. LOCATION clearing
  426. -----------------
  427.     IS in_forest.
  428.     DESCRIPTION
  429.         "You are in a clearing, with a forest surrounding you on the west
  430.         and south."
  431.     EXIT e, n TO clearing.
  432.     EXIT w TO dimly_lit_forest.
  433.     EXIT s TO dimly_lit_forest2.
  434. END LOCATION.
  435.  
  436. OBJECT leaves AT clearing
  437.     DESCRIPTION
  438.         IF leaves IN inventory THEN
  439.             "You are carrying a pile of leaves."
  440.         ELSE
  441.             "There is a pile of leaves on the ground."
  442.         END IF.
  443.  
  444. -- The leaves initially covers the grating. If they are removed
  445. -- the grating should be presented for the player. But this should
  446. -- only happen if the grating is where the leaves are. OK, the
  447. -- grating can't be moved, but the leaves could be put in another
  448. -- place and THEN picked up.
  449.  
  450.     VERB take DOES
  451.         IF grating HERE THEN
  452.             "A grating appears on the ground."
  453.         END IF.
  454.     END VERB.
  455.  
  456. END OBJECT.
  457.  
  458. OBJECT grating AT clearing
  459.     IS NOT takable.
  460.     IS openable.
  461.     IS NOT unlocked.
  462.     DESCRIPTION
  463. -- If the pile of leaves is on the ground the grating can't be seen.
  464. -- I.e. they shoul'd be here but not carried. The way to make the
  465. -- grating invisible is ta make an empty description. This doesn't
  466. -- mean that the player can't refer to the grating. If we wanted
  467. -- that to happen we shouldn't put the grating there until the player
  468. -- removes the leaves.
  469.         IF leaves HERE AND leaves NOT IN inventory THEN
  470.             ""
  471.         ELSE
  472.             "There is a grating securely fastened into the ground."
  473.         END IF.
  474.  
  475.     VERB open
  476.         CHECK grating IS unlocked
  477.             ELSE "The grating is locked."
  478.     END VERB.
  479.  
  480. END OBJECT.
  481.  
  482. ----------------
  483. LOCATION forest1
  484. ----------------
  485.     NAME Forest
  486.     IS in_forest.
  487.     DESCRIPTION
  488.         "You are in a large forest, with trees obstructing all views except
  489.          to the east, where a small clearing may be seen."
  490.     EXIT s TO forest1.
  491.     EXIT n TO forest2.
  492.     EXIT e TO canyon_view.
  493.     EXIT w TO dimly_lit_forest2.
  494.  
  495. END LOCATION.
  496.  
  497. ----------------
  498. LOCATION forest2
  499. ----------------
  500.     NAME Forest
  501.     IS in_forest.
  502.     DESCRIPTION
  503.         "You are in a forest, with trees in all directions around you."
  504.     EXIT s TO forest1.
  505.     EXIT n TO forest2.
  506.     EXIT w TO dimly_lit_forest2.
  507. END LOCATION.
  508.  
  509. ----------------
  510. LOCATION forest3
  511. ----------------
  512.     NAME Forest
  513.     IS in_forest.
  514.     DESCRIPTION
  515.         "You are in a forest, with trees in all directions around you."
  516.     EXIT n, w TO forest3.
  517.     EXIT e TO dimly_lit_forest.
  518.     EXIT s TO dimly_lit_forest2.
  519. END LOCATION.
  520.  
  521. --------------------
  522. LOCATION canyon_view
  523. --------------------
  524.     NAME 'Canyon View'
  525.     DESCRIPTION
  526.         "You are at the top of the great canyon on its south wall. From here
  527.         there is a marvelous view of the canyon and parts of the Frigid River
  528.         upstream.  Across the canyon, the walls of the white cliffs still
  529.         appear to loom far above.  Following the canyon upstream (north and
  530.         northwest), Aragain Falls may be seen, complete with rainbow.
  531.         Fortunately, my vision is better than average, and I can discern the
  532.         top of flood control dam #3 far to the distant north.  To the
  533.         west and south can be seen an immense forest, stretching for miles
  534.         around.  It is possible to climb down into the canyon from here."
  535.  
  536.     EXIT s, w TO forest1.
  537.     EXIT d TO ledge.
  538.  
  539. END LOCATION.
  540.  
  541. --------------
  542. LOCATION ledge
  543. --------------
  544.     DESCRIPTION
  545.         "You are on a ledge about halfway up the wall of the river canyon.
  546.         You can see from here that the main flow from Aragain Falls twists
  547.         along a passage which it is impossible to enter.  Below you is the
  548.         canyon bottom.  Above you is more cliff, which still appears
  549.         climbable."
  550.  
  551.     EXIT d TO canyon_bottom.
  552.     EXIT u TO canyon_view.
  553.  
  554. END LOCATION.
  555.  
  556. ----------------------
  557. LOCATION canyon_bottom
  558. ----------------------
  559.     NAME 'Canyon Bottom'
  560.     DESCRIPTION
  561.         "You are beneath the walls of the river canyon, which may be climbable
  562.         here.  There is a small stream here, which is the lesser part of the
  563.         runoff of Aragain Falls.  To the north is a narrow path."
  564.  
  565.     EXIT u TO ledge.
  566.     EXIT n TO beach.
  567.  
  568. END LOCATION.
  569.  
  570. --------------
  571. LOCATION beach
  572. --------------
  573.     DESCRIPTION
  574.         "You are on a small beach on the continuation of the Frigid River
  575.         past the falls.  The beach is narrow due to the presence of the white
  576.         cliffs.  The river canyon opens here, and sunlight shines in from
  577.         above.  A rainbow crosses over the falls to the west, and a narrow path
  578.         continues to the southeast."
  579.  
  580.     EXIT se TO canyon_bottom.
  581.  
  582. END LOCATION.
  583.  
  584. ----------------
  585. LOCATION kitchen
  586. ----------------
  587.     DESCRIPTION
  588.         "You are in the kitchen of the white house."
  589. -- The describe statement makes it possible to force the description
  590. -- of e.g. an object. An object at this location that has been described
  591. -- in this way will not be printed among the other objects after the
  592. -- locations description. This is a way to make objects more smoothly
  593. -- be presented in the text.
  594.  
  595.         DESCRIBE table.
  596.         "A passage leads to the west, and a dark staircase can be seen
  597.         leading upward."
  598.         DESCRIBE inside_window.
  599.  
  600.     EXIT e, out TO behind_house
  601.         CHECK inside_window IS NOT closed
  602.         ELSE "The window is closed."
  603.     END EXIT.
  604.  
  605.     EXIT u TO upstairs.
  606.     EXIT w TO inside_house.
  607.  
  608. END LOCATION.
  609.  
  610. OBJECT table AT kitchen
  611.     CONTAINER
  612. -- A container can also be used as supporter. We only changes the header
  613. -- to give the impression we want.
  614.         HEADER
  615.             "On the table you can see"
  616.     IS NOT takable.
  617.     DESCRIPTION
  618.         "A table seems to have
  619.         been used recently for the preparation of food."
  620.         LIST table.
  621.  
  622. END OBJECT.
  623.  
  624. OBJECT sack NAME elongated brown sack IN table
  625.     CONTAINER
  626.     IS openable.
  627.     ARTICLE "an"
  628.     MENTIONED
  629.         "elongated brown sack, smelling of hot peppers"
  630.  
  631.     VERB open DOES
  632.         EMPTY sack_content IN sack.
  633.         LIST sack.
  634.     END VERB.
  635.  
  636.     VERB close DOES
  637.         EMPTY sack IN sack_content.
  638.     END VERB.
  639. END OBJECT.
  640.  
  641. -- A way to make object in a container non-accessible when the container
  642. -- is closed is to empty the container in another container (not here)
  643. -- when it is closed and to move the objects the other way when it's open.
  644.  
  645. OBJECT sack_content
  646.     CONTAINER
  647. END OBJECT.
  648.  
  649. OBJECT lunch NAME hot pepper sandwich IN sack_content
  650. -- 'Mentioned' is the string that is printed e.g. when the contents
  651. -- of a container is listed.
  652.     MENTIONED
  653.         "a lunch"
  654. END OBJECT.
  655.  
  656. OBJECT garlic NAME clove 'of' garlic IN sack_content
  657. END OBJECT.
  658.  
  659. OBJECT bottle NAME clear glass bottle IN table
  660.     CONTAINER
  661.     IS openable.
  662.     DESCRIPTION
  663.     "There is a clear glass bottle here."
  664.         LIST bottle.
  665.  
  666. END OBJECT.
  667.  
  668. -- To use 'of' in this way is a little cheating. It will define
  669. -- 'of' as an adjective and it will be possible to refer to the
  670. -- water as "of water" as well as "quantity water".
  671.  
  672. OBJECT water NAME quantity 'of' water IN bottle
  673.  
  674.     VERB take
  675.         CHECK bottle IS NOT closed
  676.         ELSE "I can't reach the quantity of water."
  677. -- The qualifier 'only' means that ONLY this definition (and not the
  678. -- global one) should be used. It means that the water won't be put in
  679. -- the inventory when taken - the only thing that will happen is that
  680. -- this text will be printed.
  681.     DOES ONLY
  682.         "The water slips through your fingers."
  683.     END VERB.
  684.  
  685.     VERB drink
  686.         CHECK bottle IS NOT closed
  687.         ELSE "I can't reach the quantity of water."
  688.     DOES
  689.         "Thank you very much.  I was rather thirsty, probably from all
  690.          this talking."
  691.         LOCATE water AT nowhere.
  692.     END VERB.
  693. END OBJECT.
  694.  
  695. OBJECT inside_window NAME window AT kitchen
  696.     IS NOT takable.
  697.     IS openable.
  698.     DESCRIPTION
  699.         "To the east is a small window which is"
  700.         IF inside_window IS NOT closed THEN
  701.             "open."
  702.         ELSE
  703.             "closed."
  704.         END IF.
  705.  
  706.     VERB open DOES ONLY
  707.         MAKE inside_window NOT closed.
  708.         MAKE outside_window NOT closed.
  709.         "With great effort, you open the window far enough to allow passage."
  710.     END VERB.
  711.  
  712.     VERB close DOES ONLY
  713.         MAKE inside_window closed.
  714.         MAKE outside_window closed.
  715.         "The window closes (more easily than it opened)."
  716.     END VERB.
  717.  
  718. END OBJECT.
  719.  
  720. ---------------------
  721. LOCATION inside_house
  722. ---------------------
  723.     NAME 'Living room'
  724.     DESCRIPTION
  725.         "You are in the living room.  There is a door to the east."
  726.         DESCRIBE wooden_door.
  727.         DESCRIBE trophy_case.
  728.  
  729.     EXIT e TO kitchen.
  730.     EXIT w TO w_of_house
  731.         CHECK "The door is nailed shut."
  732.     END EXIT.
  733.     EXIT d TO magnificient_view
  734.         CHECK trap_door HERE
  735.             ELSE "You can't go that way."
  736.         AND trap_door IS NOT closed
  737.             ELSE "The door is closed."
  738.     END EXIT.
  739.  
  740. END LOCATION.
  741.  
  742. OBJECT wooden_door NAME wooden door AT inside_house
  743.     IS openable.
  744.     IS NOT takable.
  745.     DESCRIPTION
  746.         "To the west is a wooden door with strange gothic lettering,
  747.         which appears to be nailed shut."
  748.  
  749.     VERB read DOES
  750.         "The engravings translate to, 'This space intentionally left blank'."
  751.     END VERB.
  752.  
  753.     VERB open DOES ONLY
  754.         "The door cannot be opened."
  755.     END VERB.
  756.  
  757. END OBJECT.
  758.  
  759. OBJECT trophy_case NAME trophy case AT inside_house
  760.     IS NOT takable.
  761.     IS openable.
  762.  
  763. END OBJECT.
  764.  
  765. OBJECT rug AT inside_house
  766.     DESCRIPTION
  767.         "In the center of the room is a large oriental rug."
  768.  
  769.     VERB take DOES ONLY
  770.         "The rug is extremely heavy and cannot be carried."
  771.     END VERB.
  772.  
  773.     VERB move DOES
  774.         "With a great effort, the rug is moved to one side of the room."
  775.         LOCATE trap_door HERE.
  776.         DESCRIBE trap_door.
  777.     END VERB.
  778. END OBJECT.
  779.  
  780. OBJECT trap_door NAME trap door
  781.     IS NOT takable.
  782.     IS openable.
  783.     DESCRIPTION
  784.         "With the rug moved, the dusty cover of a closed trap door appears."
  785.  
  786.     VERB open DOES ONLY
  787.         "The door reluctantly opens to reveal a rickety staircase descending
  788.         into darkness."
  789.         MAKE trap_door NOT closed.
  790.     END VERB.
  791. END OBJECT.
  792.  
  793. OBJECT sword NAME elvish sword AT inside_house
  794.     IS NOT taken.
  795.     DESCRIPTION
  796. -- This sword can't be put back on the mantlepiece. By using an
  797. -- attribute that will be marked as true first time you take it
  798. -- you will forever change its description. As you can see, it's
  799. -- not really on any mantlepiece - it just looks that way.
  800.         IF sword IS NOT taken THEN
  801.             "On hooks above the mantlepiece hangs an elvish sword of
  802.             great antiquity."
  803.         ELSE
  804.             "There is an antique elvish sword here."
  805.         END IF.
  806.  
  807.     VERB take DOES
  808.         MAKE sword taken.
  809.     END VERB.
  810.  
  811. END OBJECT.
  812.  
  813. OBJECT lantern NAME battery brass lantern AT inside_house
  814.     IS NOT lit.
  815.     IS NOT taken.
  816.     DESCRIPTION
  817.         IF lantern IS NOT taken THEN
  818.             "A battery-powered brass lantern is on the trophy case."
  819.         ELSE
  820.             "A battery-powered brass lantern is here."
  821.         END IF.
  822.  
  823.     VERB take DOES
  824.         MAKE lantern taken.
  825.     END VERB.
  826.  
  827.     VERB light, turn_on DOES
  828.         MAKE lantern lit.
  829.         "The lamp is now on."
  830.     END VERB.
  831.  
  832.     VERB turn_off DOES
  833.         MAKE lantern NOT lit.
  834.         "The lamp is now off."
  835.     END VERB.
  836.  
  837. END OBJECT.
  838.  
  839. OBJECT issue AT inside_house
  840.     DESCRIPTION
  841.         "There is an issue of US NEWS & DUNGEON REPORT dated 29-FEB-92 here."
  842.  
  843.     VERB read DOES
  844.         "$tUS NEWS & DUNGEON REPORT
  845.          $n29-FEB-92.........................Late Dungeon Edition
  846.          $n$t--- LATE NEWS FLASH!! ---
  847.          $n$nThe Dungeon prelude is now available as an ALAN implementation.
  848.          $nThe Dungeon game was selected as an example that everybody
  849.         interested in adventure gaming should recognize."
  850.     END VERB.
  851.  
  852. END OBJECT.
  853.  
  854. -----------------
  855. LOCATION upstairs
  856. -----------------
  857.     DESCRIPTION
  858.             "You are in the attic. The only exit is stairs that lead down."
  859.  
  860.     EXIT d TO kitchen.
  861. END LOCATION.
  862.  
  863.  
  864. OBJECT rope AT upstairs
  865.     DESCRIPTION
  866.         "A large coil of rope is lying in the corner."
  867. END OBJECT.
  868.  
  869. OBJECT brick NAME square clay brick AT upstairs
  870.     DESCRIPTION
  871.         "There is a square brick here which feels like clay."
  872. END OBJECT.
  873.  
  874. OBJECT nasty_knife NAME nasty knife AT upstairs
  875.     DESCRIPTION
  876.         "A nasty-looking knife is lying here."
  877. END OBJECT.
  878.  
  879.  
  880. --------------------------
  881. LOCATION magnificient_view
  882. --------------------------
  883.     NAME 'Breath-Taking View'
  884.     DESCRIPTION
  885.         "And here we have a very special guest, straight from
  886.         Colossal Cave - the Breath-Taking View!"
  887.         "$p"
  888.  
  889.         "You are on the edge of a breath-taking view. Far below you is an
  890.         active volcano, from which great gouts of molten lava come surging
  891.         out, cascading back down into the depths.  The glowing rock fills the
  892.         farthest reaches of the cavern with a blood-red glare, giving
  893.     everything an eerie, macabre appearance.  The air is filled with
  894.     flickering
  895.         sparks of ash and a heavy smell of brimstone.  The walls are hot to
  896.         the touch, and the thundering of the volcano drowns out all other
  897.         sounds.  Embedded in the jagged roof far overhead are myriad twisted
  898.         formations composed of pure white alabaster, which scatter the murky
  899.         light into sinister apparitions upon the walls.  To one side is a deep
  900.         gorge, filled with a bizarre chaos of tortured rock which seems to
  901.         have been crafted by the devil himself.  An immense river of fire
  902.         crashes out from the depths of the volcano, burns its way through the
  903.         gorge, and plummets into a bottomless pit far off to your left.
  904.         Across the gorge, the entrance to a valley is dimly visible.  To
  905.         the right, an immense geyser of blistering steam erupts continuously
  906.         from a barren island in the center of a sulfurous lake, which bubbles
  907.         ominously.  The far right wall is aflame with an incandescence of its
  908.         own, which lends an additional infernal splendor to the already
  909.         hellish scene.  A dark, foreboding passage exits to the south."
  910.  
  911.         "$p"
  912.         "You have now reached the end of this ALAN demo, but it sure
  913.         shouldn't be the end of of adventuring. It is now up to You,
  914.         the adventure writer to ensure the continuation of the era
  915.         of the adventure games. So just don't sit there. Get your
  916.         plots ready and get down to serious adventure writing."
  917.  
  918.     DOES
  919.         QUIT.
  920.  
  921. END LOCATION.
  922.  
  923. ----------------
  924. LOCATION nowhere
  925. ----------------
  926. -- This is a location with no connections to the world. It's only
  927. -- reason for existens is to get a place to dump objects that no
  928. -- longer should take part in the game (like the water in the bottle).
  929. -- This is because there is no way to REALLY remove an object from
  930. -- the game.
  931.  
  932. END LOCATION.
  933.  
  934.  
  935. ---------------------------------------------------------------------
  936. --
  937. --          S T A R T   S E C T I O N
  938. --
  939. ---------------------------------------------------------------------
  940. -- Here we define where the player should be in the beginning of the
  941. -- game and here can we also put code for initializing and maybe write
  942. -- an introduction. 'Visits 3' means that the locations
  943. -- should only be fully described every 4th time the player visits
  944. -- them (3 visits in between).
  945. ---------------------------------------------------------------------
  946.  
  947.     START AT w_of_house.
  948.  
  949.     VISITS 3.
  950.  
  951.     SCHEDULE bird_chirp AT hero AFTER 3.
  952.  
  953.  
  954.  
  955.